import axios, {
  type AxiosInstance,
  type AxiosResponse,
  AxiosError,
} from "axios"
import { ElMessage } from "element-plus";

export interface ApiResponse<T> {
  informosomeId: string;
  namespace: string | null;
  response: T
}

// 创建 Axios 实例
const axiosInstance: AxiosInstance = axios.create({
  timeout: 5000, // 设置超时时间为 5 秒
})

// 请求拦截器
axiosInstance.interceptors.request.use(
  (config) => {
    // ...
    return config
  },
  (error: AxiosError) => {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 响应拦截器
axiosInstance.interceptors.response.use(
  (response: AxiosResponse) => {
    let flag = true
    const { body } = response.data
    if (Array.isArray(body)) {
      body.forEach(v => {
        if (v.isSuccessful) {
          ElMessage.success('操作成功')
        } else {
          ElMessage.error(v.message)
          flag = false
        }
      })
    }
    if (flag) {
      return body
    } else {
      return false
    }
    // ...
  },
  (error: AxiosError) => {
    ElMessage.error('服务发生错误')
    // 对响应错误做些什么
    return Promise.reject(error)
  }
)
export default axiosInstance
